var key_left  = keyboard_check(vk_left);
var key_right = keyboard_check(vk_right);
hsp = (key_right - key_left) * move_speed;
vsp += grav;

// horizontal
if (place_meeting(x + hsp, y, obj_wall)) {
    while (!place_meeting(x + sign(hsp), y, obj_wall)) x += sign(hsp);
    hsp = 0;
}
x += hsp;

// vertical
if (place_meeting(x, y + vsp, obj_wall)) {
    while (!place_meeting(x, y + sign(vsp), obj_wall)) y += sign(vsp);
    vsp = 0;
}
y += vsp;